package com.hqq.exercise.string;

import java.util.HashMap;
import java.util.Map;

/**
 * FirstNotRepeatChar 第一个只出现一次的字符
 * 题目描述:
 * 在字符串中找出第一个只出现一次的字符
 * 样例输入:
 * "abaccdeff"
 * 样例输出:
 * 'b'
 * Created by heqianqian on 2017/8/21.
 */
public class FirstNotRepeatChar {

    /**
     * 思路:使用hash表保存每个字符以及其出现的次数
     */
    public static char getFirstNotRepeatCharByHashMap(String str) {
        Map<Character, Integer> map = new HashMap<>();
        for (char c : str.toCharArray()) {
            if (map.containsKey(c)) {
                map.put(c, map.get(c) + 1);
            } else {
                map.put(c, 1);
            }
        }
        for (char c : map.keySet()) {
            if (map.get(c) == 1) {
                return c;
            }
        }
        return ' ';
    }

    /**
     * 思路:遍历数组
     */
    public static char getFirstNotRepeatChar(String str) {
        char[] array = str.toCharArray();
        boolean flag = false;
        for (int i = 0; i < array.length; i++) {
            flag = false;
            for (int j = i + 1; j < array.length; j++) {
                if (array[i] == array[j]) {
                    flag = true;
                    break;
                }
            }
            if (!flag) {
                System.out.println(array[i]);
                return array[i];
            }
        }
        return ' ';
    }
}
